home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / TOOLBOX / VDITOOL.MOD < prev    next >
Encoding:
Modula Implementation  |  1994-01-04  |  2.8 KB  |  131 lines

  1. IMPLEMENTATION MODULE VDITool;
  2.  
  3. (*
  4. VDI Tools.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM AES      IMPORT IconBlkPtr;
  12. FROM GrafMgr  IMPORT GrafHandle;
  13. FROM RcMgr    IMPORT GRect;
  14. FROM VDI      IMPORT XY;
  15. FROM VControl IMPORT RC,MaxWorkIn,MaxWorkOut,VOpnVWk,VClsVWk,VSClip;
  16. FROM PORTAB   IMPORT UNSIGNEDWORD,SIGNEDWORD;
  17.  
  18. PROCEDURE OpenVirtualWorkstation(VAR Handle: UNSIGNEDWORD): BOOLEAN;
  19.  
  20. VAR WorkIn : ARRAY[0..(MaxWorkIn - 1)] OF UNSIGNEDWORD;
  21.     WorkOut: ARRAY[0..(MaxWorkOut - 1)] OF UNSIGNEDWORD;
  22.     i      : UNSIGNEDWORD;
  23.  
  24. BEGIN
  25.   Handle:= GrafHandle(i,i,i,i);
  26.  
  27.   FOR i:= 0 TO (MaxWorkIn - 1) DO
  28.     WorkIn[i]:= 1;
  29.   END;
  30.   WorkIn[10]:= RC;
  31.  
  32.   VOpnVWk(WorkIn,Handle,WorkOut);
  33.   RETURN Handle > 0;
  34. END OpenVirtualWorkstation;
  35.  
  36. PROCEDURE CloseVirtualWorkstation(VAR Handle: UNSIGNEDWORD);
  37. BEGIN
  38.   VClsVWk(Handle);
  39. END CloseVirtualWorkstation;
  40.  
  41. PROCEDURE GRectToArray(VAR Rect : GRect;
  42.                        VAR Array: ARRAY (*[0..3]*) OF XY);
  43. BEGIN
  44.   WITH Rect DO
  45.     Array[0]:= GX;
  46.     Array[1]:= GY;
  47.     Array[2]:= GX + GW - 1;
  48.     Array[3]:= GY + GH - 1;
  49.   END;
  50. END GRectToArray;
  51.  
  52. PROCEDURE GBoxToArray(VAR Box  : GRect;
  53.                       VAR Array: ARRAY (*[0..9]*) OF XY);
  54. BEGIN
  55.   WITH Box DO
  56.     Array[0]:= GX;
  57.     Array[1]:= GY;
  58.     Array[2]:= GX + GW - 1;
  59.     Array[3]:= GY;
  60.     Array[4]:= Array[2];
  61.     Array[5]:= GY + GH - 1;
  62.     Array[6]:= GX;
  63.     Array[7]:= Array[5];
  64.     Array[8]:= Array[0];
  65.     Array[9]:= Array[1];
  66.   END;
  67. END GBoxToArray;
  68.  
  69. (*
  70. PROCEDURE GIconToArray(    IconSpec: IconBlkPtr;
  71.                            XOffset : SIGNEDWORD;
  72.                            YOffset : SIGNEDWORD;
  73.                        VAR Array   : ARRAY (*[0..17]*) OF XY);
  74.  
  75. BEGIN
  76. (*
  77.   note: same access for CIconBlkPtr, because the first element of
  78.   an CIconBlk is an IconBlk.
  79. *)
  80. (*
  81.    IBXIcon: SIGNEDWORD;
  82.    IBYIcon: SIGNEDWORD;
  83.    IBWIcon: UNSIGNEDWORD;
  84.    IBHIcon: UNSIGNEDWORD;
  85.    IBXText: SIGNEDWORD;
  86.    IBYText: SIGNEDWORD;
  87.    IBWText: UNSIGNEDWORD;
  88.    IBHText: UNSIGNEDWORD;
  89. *)
  90. (*
  91.   WITH IconSpec^ DO
  92.     Array[0]:= XOffset + IBXIcon;
  93.     Array[1]:= YOffset + IBYIcon;
  94.     Array[2]:= Array[0];
  95.     Array[3]:= Array[1] + IBHIcon - 1;
  96.     Array[4]:=
  97.     Array[5]:=
  98.     Array[6]:=
  99.     Array[7]:=
  100.     Array[8]:=
  101.     Array[9]:=
  102.     Array[10]:=
  103.     Array[11]:=
  104.     Array[12]:=
  105.     Array[13]:=
  106.     Array[14]:=
  107.     Array[15]:=
  108.     Array[16]:=
  109.     Array[17]:=
  110.    END;
  111. *)
  112. END GIconToArray;
  113. *)
  114.  
  115. PROCEDURE SetClip(Handle: UNSIGNEDWORD; VAR Rect: GRect);
  116.  
  117. VAR PXY: ARRAY[0..3] OF XY;
  118.  
  119. BEGIN
  120.   GRectToArray(Rect,PXY);
  121.   VSClip(Handle,TRUE,PXY);
  122. END SetClip;
  123.  
  124. BEGIN
  125.   GlobalHandle:= 0;
  126. #if not proc_const
  127.   OpenVWork:= OpenVirtualWorkstation;
  128.   CloseVWork:= CloseVirtualWorkstation;
  129. #endif
  130. END VDITool.
  131.